"""@constructor 装饰器扩展

处理构造函数装饰器，将 Python 的 __init__ 方法转换为 C++ 构造函数。
"""

from ..ir import IRContext
from ..extension_base import extension_processor


@extension_processor(
    "constructor",
    match_rule=[{"decorator": "constructor", "node_type": "method"}],
)
def process_constructor(context: IRContext):
    """处理@constructor装饰器

    将 Python 的 __init__ 方法转换为 C++ 构造函数：
    1. 将方法名从 __init__ 改为类名
    2. 设置返回类型为空（构造函数无返回类型）
    """

    node = context.node

    # 获取父类信息
    if hasattr(node, "parent") and node.parent and hasattr(node.parent, "name"):
        # 获取父类名
        parent_class = node.parent
        class_name = parent_class.name

        # 将方法名改为类名（C++ 构造函数）
        node.name = class_name

        # 标记为构造函数
        node.set_extension_param("cpp_return_type", "")
